home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / lib / mathlib / libblas / src_original / idamax.f < prev    next >
Encoding:
Text File  |  1994-08-02  |  1.3 KB  |  59 lines

  1.       INTEGER          FUNCTION IDAMAX( N, DX, INCX )
  2. *
  3. *     finds the index of element having max. absolute value.
  4. *     jack dongarra, linpack, 3/11/78.
  5. *
  6. *     .. Scalar Arguments ..
  7.       INTEGER                           INCX, N
  8. *     ..
  9. *     .. Array Arguments ..
  10.       DOUBLE PRECISION                  DX( 1 )
  11. *     ..
  12. *     .. Local Scalars ..
  13.       INTEGER                           I, IX
  14.       DOUBLE PRECISION                  DMAX
  15. *     ..
  16. *     .. Intrinsic Functions ..
  17.       INTRINSIC                         DABS
  18. *     ..
  19. *     .. Executable Statements ..
  20. *
  21.       IDAMAX = 0
  22.       IF( N.LT.1 )
  23.      $   RETURN
  24.       IDAMAX = 1
  25.       IF( N.EQ.1 )
  26.      $   RETURN
  27.       IF( INCX.EQ.1 )
  28.      $   GO TO 30
  29. *
  30. *        code for increment not equal to 1
  31. *
  32.       IX = 1
  33.       IF( INCX.LT.0 )
  34.      $   IX = 1 - ( N-1 )*INCX
  35.       DMAX = DABS( DX( IX ) )
  36.       IX = IX + INCX
  37.       DO 20 I = 2, N
  38.          IF( DABS( DX( IX ) ).LE.DMAX )
  39.      $      GO TO 10
  40.          IDAMAX = I
  41.          DMAX = DABS( DX( IX ) )
  42.    10    IX = IX + INCX
  43.    20 CONTINUE
  44.       IF( INCX.LT.0 )
  45.      $   IDAMAX = N - IDAMAX + 1
  46.       RETURN
  47. *
  48. *        code for increment equal to 1
  49. *
  50.    30 DMAX = DABS( DX( 1 ) )
  51.       DO 40 I = 2, N
  52.          IF( DABS( DX( I ) ).LE.DMAX )
  53.      $      GO TO 40
  54.          IDAMAX = I
  55.          DMAX = DABS( DX( I ) )
  56.    40 CONTINUE
  57.       RETURN
  58.       END
  59.